package com.itheima.d2_recursion;

/**
 * @ClassName Test1
 * @Author 16799
 * @Date 2025/8/23 10:32
 * @Version 1.0
 * @Description TODO
 *
 *   需求：
 * 啤酒2元1瓶，4个盖子可以换一瓶，2个空瓶可以换一瓶，
 * 请问10元钱可以喝多少瓶酒，剩余多少空瓶和盖子。
 * 答案：
 * 15瓶 3盖子 1瓶子
 **/
public class Test1 {

    public static int totalNumber;  //总酒数
    public static int lastBottleNumber;  //空酒瓶
    public static int lastCoverNumber;  //盖子
    public static void main(String[] args) {
        buy(10);
        System.out.println("共计酒数： "+totalNumber);
        System.out.println("剩余盖子： "+lastCoverNumber);
        System.out.println("剩余空瓶： "+lastBottleNumber);
    }

    public static void buy(int money) {
        //1.先不管买酒后产生的空酒瓶和盖子换酒问题，直接买
        int buyNumber = money/2;        //第一轮买的酒数
        totalNumber +=buyNumber;
        //接着发现，第一次买完酒之后，还可以继续用盖子空瓶换酒，所以总的买酒数量要重新统计，所以考虑用“静态全局变量”,只要一份
        //假设买了5瓶酒，那其中4盖子和4空瓶可以利用，剩余的盖子和空瓶要留着后面使用，所以还需要定义两个“静态全局变量”

        //2.先计算本轮买酒后总的盖子数和空瓶数，然后把盖子和空瓶换算成钱来购买
        int allBottleNumber = buyNumber+lastBottleNumber;   //总空瓶数
        int allCoverNumber = buyNumber+lastCoverNumber;     //总盖子数
        int allMoney = 0;

        if (allBottleNumber >= 2){
            allMoney += (allBottleNumber/2)*2;
        }
        //当空瓶数为奇数时，换不完酒，就还需要记录剩余的空瓶数
        lastBottleNumber = allBottleNumber%2;

        //盖子也是同上类似的道理
        if (allCoverNumber >= 4){
            allMoney += (allCoverNumber/4)*2;
        }
        lastCoverNumber = allCoverNumber%4;

        if (allMoney>=2){
            buy(allMoney);
        }
    }
}
